/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dp1.pucp.Logistica.Controlador;

import CharliesCookies.MainController;
import com.dp1.pucp.Modelo.Clases.*;
import com.dp1.pucp.Logistica.DAO.*;
import com.dp1.pucp.Logistica.Vista.*;
import com.dp1.pucp.Seguridad.DAO.LogDAO;
import com.dp1.pucp.Util.Validaciones;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

/**
 *
 * @author ubuntu64
 */
public class AlmacenControlador {

    private TipoProductoDAO m;
    private AlmacenGUI AlmacenView;
    private Almacen alm;
    private ArrayList<String> lstTipo;
    private MantAlmacenControlador mantTipoProductoControlador;
    private final static int ESTADO_ACTIVO = 1;

    public AlmacenControlador(TipoProductoDAO dao, AlmacenGUI view, MantAlmacenControlador buc, Almacen almacen) {
        m = dao;
        AlmacenView = view;
        mantTipoProductoControlador = buc;
        llenarTipoCombo();
        alm = almacen;
        AlmacenView.setFormUsuario(alm);

        AlmacenView.addCancelarListener(new cancelarListener());
        AlmacenView.addGuardarListener(new guardarTipoProductoListener());

    }

    private void llenarTipoCombo() {
        lstTipo = m.listarTipoAlmacen();
        AlmacenView.llenaComboEstado(lstTipo);
    }

    class guardarTipoProductoListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            Almacen a = new Almacen();
            //a.setIdalmacen(AlmacenView.almacen.getIdalmacen());
            
            String nombre=AlmacenView.getNombre();
            String descripcion=AlmacenView.getDescripcion();
            String espTotal=AlmacenView.getEspTotal();
            String espUtilizado=AlmacenView.getEspUtilizado();
            //int tip=AlmacenView.getTipo();
            
            boolean nombreFlag=false;
            boolean espacioFlag=false;
            boolean descripcionFlag=false;
            boolean espTotalFlag=false;
            boolean espUtilizadoFlag=false;
            
            
            
            
            if(nombre.equals("")){
                nombreFlag=true;
            }
            
            if(descripcion.equals("")){
                descripcionFlag=true;
            }
            
            if (espTotal.equals("")){
                espTotalFlag=true;
            }
            
            if(espUtilizado.equals("")){
                espUtilizadoFlag=true;
            }
            
            if (espUtilizadoFlag||espTotalFlag||descripcionFlag||nombreFlag) {
                Validaciones.mostrarMensajeErrorVal("Ingrese los campos correctamente");
                return;
            }
            
            if(Long.parseLong(AlmacenView.getEspUtilizado())>Long.parseLong(AlmacenView.getEspTotal())){
               espacioFlag=true; 
            }
            
            if (espacioFlag){
                Validaciones.mostrarMensajeErrorVal("Ingrese los campos correctamente");
                return;
            }
            
            a.setNombre(AlmacenView.getNombre());
            a.setDescripcion(AlmacenView.getDescripcion());

            a.setEspacioTotal(Long.parseLong(AlmacenView.getEspTotal()));
            a.setEspacioUtilizado(Long.parseLong(AlmacenView.getEspUtilizado()));

            a.setEspacioLibre(Long.parseLong(AlmacenView.getEspTotal()) - Long.parseLong(AlmacenView.getEspUtilizado()));

            String tipo = lstTipo.get(AlmacenView.getTipo());

            String Stipo = "";
            if (tipo.equals("Materia Prima")) {
                Stipo = "MP";
            }
            if (tipo.equals("Producto Intermedio")) {
                Stipo = "PI";
            }
            if (tipo.equals("Producto Final")) {
                Stipo = "PF";
            }

            a.setTipo(Stipo);
            a.setEstado(ESTADO_ACTIVO);

            if (alm != null) {
                a.setIdalmacen(alm.getIdalmacen());
            }
            if (alm != null) {
                LogDAO.insertarLog(MainController.usuario, "Editar Almacen");
            } else {
                LogDAO.insertarLog(MainController.usuario, "Agregar Almacen");
            }
            m.guardarAlmacen(a);
            AlmacenView.mostrarAviso("Se guardo exitosamente el almacen");
            mantTipoProductoControlador.listarResultados();
            AlmacenView.dispose();
        }
    }

    class cancelarListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            if (alm != null) {
                LogDAO.insertarLog(MainController.usuario, "Salir Editar Almacen");
            } else {
                LogDAO.insertarLog(MainController.usuario, "Salir Agregar Almacen");
            }
            AlmacenView.dispose();
        }
    }
}
